package main;

import validate.PasswordHasher;
import validate.PasswordHasher.PasswordHash;
import mistic.storage.Registro;
import mistic.storage.Storage;

public class Main {
	/**
	 * Este es el metodo que tenes que ejecutar
	 * 
	 * Vas a poder crear usuarios y validarlos
	 */
	public static void main(String[] args) {
	// PARA GENERAR USUARIOS
		String nombreUsuarioCrear ="usuario2"; 
		String claveUsarioCrear   ="clave2";
		/**
		 * Con esta funcion le pasas la clave y te devuelve un hash y un salt
		 * LA TENES QUE USAR CUANDO LE GENERAS LA CLAVE AL USUARIO
		 */
		PasswordHash valor =  PasswordHasher.hash(claveUsarioCrear);
		/**
		 *  Esta funcion la llamas para crear el registro, siempre agrega registros
		 *  el primero campo es el usuario, los otros dos son el hash de la clave y el salt
		 *  el ultimo campo serian los roles que todavia no los graba en el archivo
		 */
		Storage.generarRegistro(nombreUsuarioCrear,valor.getHash(),valor.getSalt(),"1:2:3:4:5:6");
	//PARA VALIDAR USUARIOS
		String usuarioValidar =   "usuario4";
		String claveValidar   =   "clave4";

//		/**
//		 * La siguiente funcion dado un usuario obtiene el hash y la clave que antes se grabo
//		 * y te devuelve una objeto, si el objeto es NULL significa que no lo encontro
//		 */
//		Registro reg = Storage.obtenerRegistro(usuarioValidar);
//		
//		if(reg == null){
//			System.out.println("Registro no encontrado");
//		}else{
//			/**
//			 * Antes de validar se debe verificar que no exceda los tres accesos
//			 * entonces 
//			 */
//			if(!excedeLimite(reg.getFallos()) ){
//				
//				/**
//				 * reg.getClaveHash() :  es el valor que se grabo en el archivo 
//				 * reg.getSalt() :  es el valor que se grabo en el archivo 
//				 * "clave" : VALOR 	QUE INGRESA EL USUARIO
//				 */
//				boolean isValid= PasswordHasher.validar(claveValidar, reg.getClaveHash(),reg.getSalt()); 
//				
//				System.out.println("La verificacion fue: " + isValid +" - para el usuario: " + reg.getUsuario());
//				/**
//				 * Para el caso en que es invalido la validacion incrementa el contador de fallos
//				 */
//				if(!isValid){
//					Storage.incrementarFallo(reg.getUsuario());
//				}
//			}else{
//				System.out.println("El usuario no fue validado por exceder los tres casos fallidos");
//			}
//		}
	}

	private  static  boolean excedeLimite(int cantidadFallo){
		return (cantidadFallo>=3);
	}
}
